/* 删除顺序表中所有值为x的元素 */

#include <iostream>
#include "sqlist.cpp"
using namespace std;

// 删除值为x的元素 -- 方法一
void del(Sqlist &L, int x)
{
  // 记录下一个元素插入的位置
  int k = 0;
  
  // 遍历
  for (int i = 0; i <= L.length - 1; ++i)
    if (L.data[i] != x)
    {
      // 不为x，则插入
      L.data[k] = L.data[i];
      ++k;
    }
  
  // 更新长度
  L.length = k;
}

// 删除值为x的元素 -- 方法二
void Del(Sqlist &L, int x)
{
  // 记录元素左移的幅度
  int k = 0;
  
  // 遍历
  for (int i = 0; i <= L.length - 1; ++i)
  {
    if (L.data[i] == x)
      ++k; // 出现x，之后的元素左移幅度+1
    else
      L.data[i - k] = L.data[i];
  }
  L.length = L.length - k;
}


int main()
{
  // 创建顺序表
  Sqlist L = {{12, 3, 5, 8, 9, 3}, 6};
  
  // 删除元素
  del(L, 3);
  
  // 打印
  for (int j = 0; j < L.length; ++j)
    cout << L.data[j] << " ";
}
